package org.proxycine.gestsalles.tests;

import junit.framework.TestCase;

import org.junit.Before;
import org.junit.Test;

import org.proxycine.gestsalles.web.beans.CatalogueBean;

public class CatalogueBeanTest extends TestCase {
	
	CatalogueBean bean;
	
	@Before
	public void setUp() throws Exception {
		bean = new CatalogueBean();
		assertNotNull(bean.getFilmsCatalogue());
		assertFalse(bean.getFilmsCatalogue().isEmpty());
		assertFalse(bean.getData().isEmpty());
	}
	
	@Test
	public void testCatalogueInitOk(){
		//On vérifie que le panier est nul à l'initialisation  
		// et que le panier n'est pas validé
		assertEquals(false, bean.isValideAchatPressed());
		assertEquals(0, bean.getNbFilmsDansPanier());
		assertEquals(bean.getData().size(), bean.getFilmsCatalogue().size());
			System.out.println("[TEST] INIT CATALOGUE : ok");
	}	
	
	@Test
	public void testAddAndRemoveFilm(){
		// on ajoute une copie d'un film
		bean.addFilm(0);
		assertEquals(Integer.valueOf(1), bean.getData().get(0));
		assertEquals(1, bean.getNbFilmsDansPanier());
			System.out.println("[TEST] ADD FILM : ok");
		
		// on supprime une copie de ce même film
		bean.removeFilm(0);
		assertEquals(Integer.valueOf(0), bean.getData().get(0));
		assertEquals(0, bean.getNbFilmsDansPanier());
			System.out.println("[TEST] REMOVE FILM : ok");
	}
	 	
	@Test
	public void testRemoveKO(){
		// on veut supprimer une copie d'un film alors qu'aucune
		// copie n'a été préalablement ajoutée
		bean.removeFilm(0);
		assertEquals(Integer.valueOf(0), bean.getData().get(0));
		assertEquals(0, bean.getNbFilmsDansPanier());
			System.out.println("[TEST] REMOVE FILM KO: ok");
	}
	
	@Test
	public void testValiderAchatOK(){
		// on vérifie après validation, que le panier
		// est réinitialisé à 0
		bean.addFilm(0);
		bean.valideAchat();
		assertEquals(0, bean.getNbFilmsDansPanier());
		assertEquals(Integer.valueOf(0), bean.getData().get(0));
		assertEquals(false, bean.isValideAchatPressed());
			System.out.println("[TEST] VALIDER ACHAT : ok");

			
	}
	
}
